from llama_cpp import Llama
import pandas as pd

# 指定 GGUF 格式模型文件的路径
# model_path = "/Users/zhangxiaotian/.lmstudio/models/lmstudio-community/DeepSeek-R1-Distill-Qwen-7B-GGUF/DeepSeek-R1-Distill-Qwen-7B-Q6_K.gguf"
model_path = "/Users/zhangxiaotian/.lmstudio/models/lmstudio-community/Qwen2.5-7B-Instruct-1M-GGUF/Qwen2.5-7B-Instruct-1M-Q6_K.gguf"

#使用 Pandas 读取 CSV 文件
df = pd.read_csv('ChnSentiCorp_htl_all.csv')

# 处理缺失值，这里将 NaN 替换为空字符串，你也可以根据需求删除这些行
df = df.dropna(axis=0)

test = df.head(30)
llm = Llama(model_path=model_path, n_ctx=2048, n_threads=4,n_gpu_layers=-1)

system_prompt = "后续每次输入的文本都是独立的，请独立判断其情感倾向，积极输出 1，消极输出 0。"
llm(system_prompt, max_tokens=0)

def senti_class(text):
  prompt = f"判断以下文本的情感倾向，积极输出 1，消极输出 0：{text}"
  # 生成结果
  output = llm(prompt, max_tokens=2, temperature=0.2, top_p=0.9)
  # 提取结果
  result = output['choices'][0]['text'].strip()
  # print(f"文本: {text}")
  print(f"情感分析结果: {result}")
  # print(f"output: {output}")
  return result[-1]

# 待分析的文本
text = """沈阳市政府的酒店，比较大气，交通便利，出门往左就是北陵公园，环境好。."""
# 简洁指令式提示词

print(senti_class(text))

test['preditct'] = test['review'].apply(senti_class)
test.to_csv('test-qwen.csv')

